package cn.huoyingkeji.system.entity;


import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import cn.huoyingkeji.mybitisplus.domain.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

@Data
@TableName("t_sys_user")
@EqualsAndHashCode(callSuper = true)
public class SysUser extends TenantEntity {

	private static final long serialVersionUID = 1L;

	/** 头像 */
	@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
	private String avatar;

	/** 签名 */
	@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
	private String signature;

	/** 账号 */
	private String account;

	/** 密码 */
	@JsonIgnore
	private String password;

	/** 姓名 */
	private String name;

	/** 昵称 */
	private String nickname;

	/** 性别 */
	private String gender;

	/** 年龄 */
	private String age;

	/** 出生日期 */
	private String birthday;

	/** 民族 */
	private String nation;

	/** 籍贯 */
	private String nativePlace;

	/** 家庭住址 */
	private String homeAddress;

	/** 通信地址 */
	private String mailingAddress;

	/** 证件类型 */
	private String idCardType;

	/** 证件号码 */
	private String idCardNumber;

	/** 文化程度 */
	private String cultureLevel;

	/** 政治面貌 */
	private String politicalOutlook;

	/** 毕业院校 */
	private String college;

	/** 学历 */
	private String education;

	/** 学制 */
	private String eduLength;

	/** 学位 */
	private String degree;

	/** 手机 */

	private String phone;

	/** 邮箱 */
	private String email;

	/** 家庭电话 */
	private String homeTel;

	/** 办公电话 */
	private String officeTel;

	/** 紧急联系人 */
	private String emergencyContact;

	/** 紧急联系人电话 */
	private String emergencyPhone;

	/** 紧急联系人地址 */
	private String emergencyAddress;

	/** 员工编号 */
	private String empNo;

	/** 入职日期 */
	private String entryDate;

	/** 机构id */
	@JsonSerialize(using = ToStringSerializer.class)
	private Long  orgId;

	/** 岗位id */
	@JsonSerialize(using = ToStringSerializer.class)
	private Long  positionId;

	/** 职级 */
	private String positionLevel;

	/** 主管id */
	@JsonSerialize(using = ToStringSerializer.class)
	private Long  directorId;

	/** 兼任信息 */
	private String positionJson;

	/** 上次登录ip */
	private String lastLoginIp;

	/** 上次登录地点 */
	private String lastLoginAddress;

	/** 上次登录时间 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime lastLoginTime;

	/** 上次登录设备 */
	private String lastLoginDevice;

	/** 最新登录ip */
	private String latestLoginIp;

	/** 最新登录地点 */
	private String latestLoginAddress;

	/** 最新登录时间 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime latestLoginTime;

	/** 最新登录设备 */
	private String latestLoginDevice;

	/** 用户状态 */
	private String userStatus;

	/** 排序码 */
	private Integer sortCode;

	/** 扩展信息 */
	private String extJson;
	/** 机构名称 */
	@TableField(exist = false)
	private String orgName;
	/** 岗位名称 */
	@TableField(exist = false)
	private String positionName;
	/** 主管名称 */
	@TableField(exist = false)
	private String directorName;

}
